Delivery of significant volumes of data to multiple users, or end hosts, can impose a significant burden on a network. Data can be broadcast over the network and picked up by receivers interested in obtaining the data. However, there may be whole sections of a network in which there is no receiver who wishes to obtain the data so broadcasting data to these network portions wastes network bandwidth. An alternative approach is to send data directly to only those users who have requested the data using unicast methods. However, this can result in large amounts of replicated content being transmitted over the network, which again can cause congestion in the network and affect reliability and Quality of Service (QoS) for other data being transmitted in the network.
Multicasting techniques can be used to distribute content more efficiently in a network by ensuring that content is not replicated in the network until paths to its intended destinations split in the network topology.
The delivery of on-demand content poses a particular problem, however, since multiple users may request the same content at different times and each user may wish to pause or rewind the content stream during playback of the media. Delivery of such on-demand content by unicast enables a user to start viewing a stream at any time and to pause and rewind the stream. However, unicasting of all content is undesirable in most networks since it results in significant replication of the content transmitted over the network and consumes large amounts of network bandwidth.
There are difficulties in using multicast delivery techniques to deliver on-demand content to several end hosts; for example, the multicast stream cannot be paused or rewound for a single user wishing to join the stream at a later stage, as might be the case in uptake of on-demand content. This might result in the new host having to set up and receive a unicast stream for the content, no matter how little ahead in time the multicast stream might be from the start of the piece of content.
According to a first aspect of the present invention, there is provided a method of distributing content from a source to at least one destination in a content delivery network, wherein the content is transmitted to the network in a plurality of multicast streams, wherein the content in each of a plurality of the multicast streams is time-shifted relative to the content in another multicast stream, the method comprising:                receiving a request from a destination for delivery of content over a network;        determining the availability and status of the plurality of multicast streams;        analysing at least one allocation criteria;        determining a subset of the multicast streams for allocation of the requesting destination based on the at least one allocation criteria; and        allocating the destination to the subset of multicast streams for delivery of the content.        
The method of this aspect can enable the source to control allocation of a destination to receive content using particular multicast streams. This can enable components in the network, such as the source, a source designated-router, or another intelligent routing component in the network. to control distribution of content within the network. Hence, prior to allocation of the destination to multicast streams factors may be taken into account such as the capabilities and availability of different sections of the network, as described in more detail below.
Optionally, the method further comprises instructing the destination to join the allocated multicast streams.
Optionally, the method further comprises transmitting the content to the destination using the one or more streams.
In some embodiments, the allocation criteria comprise at least one of:                the buffer capacity or processing capability of the destination;        the number of streams that can be simultaneously received by the destination;        the number of streams permitted in the network for a piece of content;        the time-delay between the multicast streams;        a management policy for the multicast groups;        reliability of the network;        capacity of the network;        geographical location of the destination; and        topological location of the destination.        
In some embodiments, the determination of the subset is based on a combination of a plurality of the allocation criteria. For example, factors such as the capacity of the destination and the number of streams permitted in the network may be combined with a management policy for the multicast groups or the topological location of the destination in order to determine which multicast streams to use.
The management policy for the multicast groups may include a policy in the network as to which multicast streams should be targeted for pruning and closing down and which streams should be prioritised and built up. For example, widely distributed streams with few receiving destinations may be identified by the network and may not be allocated for new destinations so that they can be closed down once in favour of more efficient streams once the existing destinations have obtained the necessary content from them.
Factors such as the reliability and capacity of the network can refer to specific portions of the network, in particular to portions of the network that lie towards the requesting destination. If a destination is within a portion of the network that has high capacity and high reliability, the network may assign the destination to more multicast streams to enable faster receipt of the content.
The network optionally also aims to group destinations onto similar multicast streams where those destinations are located topographically and/or geographically close to other receiving destinations.
In a particular embodiment, allocating comprises allocating the destination to the maximum number of streams that the destination is capable of receiving and that the network is permitted to deliver to the destination. This can enable the fastest delivery of the content to the destination.
Optionally, the method is implemented at the source or at a source designated router.
Alternatively, the method is implemented at an intelligent content delivery component in the network.
Optionally, determining the status of the plurality of multicast streams comprises determining the position of the content that is currently being transmitted in each of the multicast streams. That is, the system determines how far through the content each multicast stream is.
In some embodiments, the management policy for the multicast groups comprises an indication of whether a group is open to a join request from a new requesting destination.
The method may further comprise transmitting a portion of the content to the destination in a unicast stream.
A number of aspects of embodiments of the system have been described above. It will be clear to one skilled in the art that each of these aspects may be implemented independently. However, the aspects are optionally implemented in conjunction with each other to provide multiple advantages as part of a larger system. Features of one aspect may be applied directly to other aspects of the system. Further, method features may be applied directly to aspects of the apparatus.
In particular, in all of the aspects described above, the destination may be a host or a host designated router, H-DR, in a multicast network. The host may be the end user terminal associated with an end user or consumer of the content or may be an intermediate device that serves the content to the user's device. For example, the destination may be a hub within a home network that receives the content for streaming to a user's terminal, such as an internet-connected television, a computer, a tablet or a telephone.
Similarly, in all of the aspects described above, the source may be the device that serves the content in the network or may be an intelligent routing component in the network that handles routing of content to destinations. The content may pass through the intelligent routing component, or the component may control other components in the network, such as the source, to implement the methods described herein.
Further, in all of the aspects set out above, the content is optionally video content and/or audio content, in particular on-demand content delivered in response to a request from a user. However, the skilled person will appreciate that the systems and methods described herein could equally be applied to networks for the distribution of data, such as text or image data, or software.